package com.example.threadSimple;

import java.util.concurrent.atomic.AtomicInteger;

import org.openjdk.jol.info.ClassLayout;

/**
 * @Author: Ah Nan
 * @Description: Synchronize、Volatile、CAS demo实例
 * @Date: 16:24 2020/6/28
 */
public class SynchronizeAndVolatileSimple {

    public static void main(String[] args) {
        /**
         * jdk 1.8 java原子类
        * */
        AtomicInteger i = new AtomicInteger();

        Object o = new Object();
        /**
         * 打印object的对象布局， o占16个字节
         * markword 占4个字节
        * */
        System.out.println(ClassLayout.parseInstance(o).toPrintable());

//        StringBuffer sb = new StringBuffer();
//        sb.append("");
//
//        StringBuilder sbu = new StringBuilder();
//        sbu.append("");

        synchronized (o){
            /**
             * 打印object的对象布局， o占16个字节
             * 可以发现关于锁的信息是记录在对象的markword里
             * */
            System.out.println(ClassLayout.parseInstance(o).toPrintable());

        }
    }
}
